无需密码自动登录,系统用户名shiyanlou
本实验环境采用带桌面的Ubuntu Linux环境,实验中会用到桌面上的程序:
LX终端(LXTerminal): Linux命令行终端,打开后会进入Bash环境,可以使用Linux命令
Firefox:浏览器,可以用在需要前端界面的课程里,只需要打开环境里写的HTML/JS页面即可
GVim:非常好用的编辑器,最简单的用法可以参考课程Vim编辑器
使用GVim编辑器输入实验所需的代码及文件,使用LX终端(LXTerminal)运行所需命令进行操作。
实验报告可以在个人主页中查看,其中含有每次实验的截图及笔记,以及每次实验的有效学习时间(指的是在实验桌面内操作的时间,如果没有操作,系统会记录为发呆时间)。这些都是您学习的真实性证明。
实验楼虚拟机,自带了python2.0和python3.0版本,无需安装 该实验建议使用 python2.0 版本, 也就是默认版本
IDE选择及安装:
vim:自带编辑器,无需安装,只要你会,随你喜欢
IDLE:python的编译器,推荐新手使用
代码:sudo apt-get install idle
spyder:需要学习学习
代码:sudo apt-get install spyder
Tkinter是一个python模块,是一个调用Tcl/Tk的接口,它是一个跨平台的脚本图形界面接口。Tkinter不是唯一的python图形编程接口,但是是其中比较流行的一个。最大的特点是跨平台,缺点是性能不太好,执行速度慢。
另外想到界面,大家自然会想到做游戏,基于python的游戏模块,可以选择pygame,有兴趣的也可以去学习。
在这里呢,比较适合我们这个小项目的图形界面开发要求,所以我们在此选择Tkinter模块来开发我们这个软件的界面
做个简单界面,先上图 界面大概就这样,实现这个基本功能,然会就添加自定义的各种东西,做出来会感觉非常好的,接下来就开始动手了......
1、如果你是接着第二节实验做过来的,那你不用重新敲代码了
2、如果你接触了Tkinter模板,那就更棒了
3、需求就是做界面⊙﹏⊙汗
#!/usr/bin/python
# -*- coding: utf-8 -*-
#Filename : backUp.py
#导入模板
import Tkinter
import os
import time
#定义函数,这里才是精髓所在
def backup():
global entry_source
global entry_target
source = entry_source.get()
target_dir = entry_target.get()
today_dir = target_dir + time.strftime('%Y%m%d')
time_dir = time.strftime("%H%M%S")
touch = today_dir + os.sep + time_dir + '.zip'
command_touch = "zip -qr " + touch +' '+ source
print command_touch
print source
print target_dir
if os.path.exists(today_dir)==0:
os.mkdir(today_dir)
if os.system(command_touch)==0:
print 'Success backup Up'
else:
print 'Failed backup'
#从这里开始呢,则是开始界面的编写及布局
root = Tkinter.Tk()
root.title('BackUp')
root.geometry("200x200")
#第一行的两个控件
lbl_source = Tkinter.Label(root, text='Source')
lbl_source.grid(row=0, column=0)
entry_source = Tkinter.Entry(root)
entry_source.grid(row=0,column=1)
#第二行的两个控件
lbl_target = Tkinter.Label(root, text='Target')
lbl_target.grid(row=1, column=0)
entry_target = Tkinter.Entry(root)
entry_target.grid(row=1,column=1)
#第三行的一个按钮控件
but_back = Tkinter.Button(root,text='BackUp')
but_back.grid(row=3, column=0)
but_back["command"] = backup
#界面的开始
root.mainloop()
1、学了第二节的代码,你可以发现,这里将第二节的代码,定义一个函数包裹住,便于调用
2、界面阶段
先调用Tkinter的Tk()框架,新建root,放我们需要的控件,代码 root=Tkinter.Tk()
定义root的标题,代码 root.title("Backup")
设定root的大小,代码 root.geometry("200x200")
定义第一、二行的两个控件
``` Label,文本控件,显示“源地址”和“目的地址” Entry,输入框控件,输入“源地址”和“目的地址”
```
顶底按钮,输入框内输入了地址信息,则点击按钮,执行函数内的语句
lbl_source = Tkinter.Label(root, text='源地址') 这条语句,表示定义Label,root指Label所在的一个母体框,text就是指显示的文本
lbl_source.grid(row=0, column=0) 这行代码,grid()函数的功能是显示控件,row指行,column指列
but_back["command"] = backup 这行代码非常重要!看到上面,定义函数的那块,函数名为backup,而这里,command指的是命令,这行代码的意思就是:将命令绑定这个函数(上面定义的),当点击这个按钮时,就调用指定的backup()函数
3、函数内部
函数内部的“global”:source 和 target_dir 都没有默认值,而他们的值,由entry_source和entry_target来赋值。不在本函数内的变量或对象,可以用标识符 global 来定义,然后在函数内部使用就可以了
关于get()函数:因为entry_source和entry_target都属于Tkinter模板中的Entry控件,该控件可以由get()函数读到该控件的文本框信息,所以只要调用get()就可以给source和target_dir赋值了
后面的代码,基本没变,可以参照第三节的代码解析去了解
1.代码正常工作:
2.程序工作正常 (备份shiyanlou下的Documents文件,打包备份压缩并放到Desktop桌面上)
3.另外,你还可以自行添加代码、测试,查看你在程序界面输入的路径,在程序内部变成了哪些变量,以及变量间的传递,程序运行顺序,都可以通过IDLE界面查看 上张图(未输入任何路径,IDLE报错):
4.好了,python练手小项目到此就告一段落了,基本功能实现,这里面还有好多功能可以继续添加,有兴趣的自己去挖掘吧